﻿using System.Collections.Generic;
using EnetaMvc.ApplicationServices.Dto;
using EnetaMvc.Infrastructure;

namespace EnetaMvc.ApplicationServices
{
    public interface INewsService
    {
        PagedResult<NewsItemDto> ListPublishedNewsItems(int page, int pageSize);
        PagedResult<ArticleDto> ListPublishedArticles(int page, int pageSize);
        ArticleDto GetPublishedArticleById(long id);
        ArticleDto GetArticleById(long id);
        void SaveArticle(ArticleDto articleDto);
        PagedResult<BlogPostDto> ListPublishedBlogPosts(int page, int pageSize);
        PagedResult<BlogPostDto> ListPostsForBlog(long blogId, int page, int pageSize);
        PagedResult<BlogPostDto> ListPublishedPostsForBlog(long blogId, int page, int pageSize);
        BlogDto GetPublishedBlogById(long id);
        BlogDto GetBlogById(long id);
        BlogPostDto GetPublishedBlogPostById(long id);
        BlogPostDto GetBlogPostById(long id);
        void SaveBlogPost(BlogPostDto blogPostDto);
        void SaveBlog(BlogDto blogDto);
        IList<BlogDto> ListPublishedBlogs();
        bool BlogPostExists(string infoSourceName, long blogId);
        IList<BlogDto> ListPendingBlogs();
        IList<BlogPostDto> ListPendingBlogPosts(int rowLimit);
        IList<ArticleDto> ListPendingArticles();
        IList<BlogDto> ListBlogsForUser(string token);
    }
}